Microsoft SHAREPOINT™ is a family of software products developed by Microsoft Corporation for collaboration, file sharing and web publishing. The Microsoft SHAREPOINT Server is one of these products.
As depicted in FIG. 1, a Microsoft SHAREPOINT™ Server (hereinafter, “Server”) is generally composed of three major tiers or logical layers: 1.) a Web Front End layer 102 which processes HTTP requests to the Server; 2.) An application layer 104 which provides such features as Search and Excel Services; and, 3.) A dedicated Microsoft SQL Server data storage 106.
While SHAREPOINT™ users can access SHAREPOINT™ functionality through multiple methods, the primary user interface is a web-based application accessed through a browser. The majority of SHAREPOINT™'s functionality is supported across all major desktop web browsers.
SHAREPOINT™ can also be accessed through: a Windows-based synchronized desktop client, Windows 7 Federated Search, WebDAV “Internet folders” (i.e. via Windows Explorer), Microsoft Outlook, Microsoft Office 2010, and other third party applications. Corporate directory security restrictions may be applied at a granular level, enabling SHAREPOINT™ sites to be internet-facing, intranet-facing, or both.
SHAREPOINT™ sites are, functionally, ASP.NET 2.0 web applications that are served using IIS and a SQL Server database as a data storage back end, or equivalents thereof. All site content data, such as items in document libraries and lists, are stored within an SQL database named by default as “WSS_Content_[ID]”.
Standard SHAREPOINT™ functionality is extremely flexible in that it allows system developers to rapidly deploy applications that can capture a variety of data with specific fields and then store that data in various buckets for further processing with workflows. See, for example, SHAREPOINT™ ‘Content Types’, ‘Fields’ and ‘Lists’. Often, system developers like to use simplified data structures and eliminate unnecessary redundancy. However, a serious limitation in SHAREPOINT™ makes it extremely difficult to produce complex data structures whereby one data item contains within a single data field multiple sets of reference data items.